Association via  audio

ABSTRACT

A source device being associated with an account uses playback of a media content item to cause a target device to become associated with the account. The target device enters an association mode and records a portion of the playing content. The target device provides the recording to a server that identifies the song (e.g., using a music fingerprint service) and uses the identification of the song to find the account that caused playback of the identified song. With the account identified, the server provides credentials of the account to target system. The target device accesses content or services using the account. As confirmation of receiving the credentials, the server causes playback of the content to transition to from the source device to the target device.

TECHNICAL FIELD

The present disclosure relates to technical solutions for associating atarget device with credentials of a source device.

BACKGROUND

The process of associating a software or hardware product with anaccount of a user often includes the user providing a username andpassword using a tactile or virtual keyboard. However, there aretechnical drawbacks and challenges with this process; among others: notall devices have a keyboard (e.g., voice-first devices), not allkeyboards are available for use (e.g., for attention or accessibilityreasons), and username-password combinations are not always ideal forauthentication. Login difficulties are compounded by frequent switchingof accounts, such as among family members sharing a device or whenproviding guest access.

While advancements have been made in transferring login credentials fromone device to another, technical challenges still remain. Sometechniques include pairing an already logged-in device with anon-logged-in device, and transferring the credentials from thelogged-in device to the non-logged-in device via an auxiliary channel,such as using HTTP on a local network (e.g., using zero-configurationnetworking). Other techniques include device pairing over BLUETOOTH andtransferring a login token over the connection. Typically, thesetechniques require an extra communication channel and, depending on thecommunication technique, consume significant energy resources for bothdevices. Such techniques further raise concerns when used for guest modeaccess. For example, where a connection is made via a WI-FI network,sharing access credentials for the same network can be undesirable forsecurity or privacy purposes.

Still other techniques use audio to transmit data, such as usingbroadband phase difference encoding. Such techniques can synthesizeaudio directly or by masking with existing audio. For example,Multimedia Information Hiding Technologies for Controlling Data(Kazuhiro Kondo, 2013) describes the use of acoustic orthogonalfrequency-division multiplexing at page 94. Some techniques includetransferring small amounts of data encoded in an audio signal, decodingthe data, and then using the decoded data to look up large pieces ofdata available at a backend system. Fast Fourier transform or similartransforms are usable to extract the sequence of tones on the clientside and transmit that to the backend to retrieve the largerinformation. Using audio to transmit data often results inrobotic-sounding audio lacking aural aesthetics.

US 2017/0019394 describes playing media items from a guest's mediaaccount on a host's media player. A guest device discovers a host mediaplayer over a wireless local area network. A token is provided from thehost media player to the guest device. The token is encoded into anaudio file, which is played by the host media player. The audio iscaptured by the guest device and decoded into the token, which istransmitted to a server for verification.

SUMMARY

The present disclosure provides methods, apparatuses, andcomputer-readable products for using audio to associate a target devicewith credentials of a source device.

In an embodiment, there is a method that includes receiving anassociation request from a target device, the association request havinga recording of at least a portion of a media content item. The methodfurther includes identifying an identifier of the media content itembased on the recording. The method further includes selecting an accountfrom an account data store based on the identifier of the media contentitem. The method further includes associating the target device with theaccount.

In some examples, the method further includes prior to receiving theassociation request: receiving, from a source device, a media contentitem playback request for the media content item, wherein the seconddevice is associated with the account; and causing playback of a mediacontent item at the source device, thereby fulfilling the media contentitem playback request. In some examples, the method further includes,responsive to associating the target device with the account,transferring the playback of the media content item from the sourcedevice to the target device. In some examples, associating the targetdevice with the account includes providing credentials to the targetdevice. In some examples, the method further includes obtaining one ormore signals from the target device. Selecting the account from theaccount data store is further based on the one or more signals. In someexamples, the media content item includes music. In some examples, themethod further includes estimating a playback start time of the mediacontent item. Selecting the account from the account data store isfurther based on the playback start time. In some examples, identifyingthe identifier is not based on audio steganography.

In an embodiment, there is a system that includes a source device, atarget device, and a media delivery system. The source device has one ormore source device processors coupled to a source device memory storingsource device instructions which when executed cause the one or moresource device processors to play a media content item. The target devicehas one or more target device processors coupled to a target devicememory storing target device instructions which when executed cause theone or more target device processors to: record an ambient noiserecording including at least a portion of the media content item; andprovide the ambient noise recording for identification. Themedia-delivery system having one or more media-delivery systemprocessors coupled to a media-delivery system memory storingmedia-delivery system instructions which when executed cause the one ormore media-delivery system processors to: receive the ambient noiserecording from the target device; identify an identifier of the mediacontent item based on the ambient noise recording; determine, based atleast in part on the identifier, an account that played the mediacontent item; and provide credentials associated with the account to thetarget device.

In some examples, the media-delivery system instructions when executedfurther cause the one or more media-delivery system processors totransfer playback of the media content item from the source device tothe target device. In some examples, transferring playback of the mediacontent item from the source device to the target device includessending a message to cause playback to fade out at the source device andsending a message to cause playback to fade-in at the target device. Inan example, the source device instructions, when executed, further causethe one or more source device processors to: request playback of themedia content item from the media delivery system; and receive the mediacontent item from the media delivery system. In an example, the sourcedevice instructions, when executed, further cause the one or more sourcedevice processors to: responsive to playing the media content item,provide a media playback receipt to the media delivery system. Playingthe media content item includes playing the media content item locallyfrom the source device. In an example, identifying the identifier of themedia content item includes audio fingerprinting. In an example,identifying the identifier is not based on audio steganography.

In an example, there is a method including: operating a media playbackappliance in a primary mode associated with a first account; responsiveto receiving a guest mode signal, creating an audio recording using asound sensing device of the media playback appliance, wherein the audiorecording contains audio associated with a media content item played bya device associated with a second account; providing the audio recordingfrom the media playback appliance to a remote server for identificationof the media content item; and operating the media playback appliance ina guest mode associated with the second account based on theidentification of the media content item.

In an example, the method further includes receiving the guest modesignal over a voice-based user interface of the media playbackappliance. In an example, operating the media playback appliance in theguest mode includes operating with a limited set of permissions comparedto the primary mode. In an example, operating the media playbackappliance in the guest mode includes operating in the guest mode until acertain number of media content items are played. In an example,operating the media playback appliance in the guest mode includesstoring credentials of the first account in association with the primarymode. In an example, the method further includes responsive to the mediaplayback appliance receiving a reversion signal while operating in theguest mode associated with the second account, operating the mediaplayback appliance in the primary mode associated with the firstaccount. In an example, the method further includes obtainingcredentials associated with the first account from the remote server. Inan example, the method further includes, after beginning to operate inthe guest mode, receiving from a media server application at least aportion of the media content item; and playing the media content itemusing the media playback appliance. In an example, playing the mediacontent item includes starting playback of the media content item at alocation other than a beginning of the media content item. In anexample, playing the media content item includes fading in playbackresponsive to receiving a fade-in message. In an example, receivingcredentials associated with the second account at the media playbackappliance. In an example, operating in the guest mode associated withthe second account based on the identification of the media content itemincludes operating in the guest mode using the credentials. In anexample, providing the audio recording includes performing anapplication programming interface call with the recording and a locationof the media playback appliance as parameters of the applicationprogramming interface call. In an example, the media playback applianceautomatically reverts to the primary mode associated with the firstaccount after an event occurs. In an example, the media playbackappliance automatically reverts to the primary mode associated with thefirst account after a device power event occurs.

In an example, there is a system that includes one or more processingdevices; and a computer-readable memory device coupled to the one ormore processing devices and comprising instructions thereon that, whenexecuted by the one or more processing devices, cause the one or moreprocessing devices to perform any of the previously described methods.

BRIEF DESCRIPTION OF THE DRAWINGS

The features and advantages of the present disclosure will become moreapparent from the detailed description set forth below when taken inconjunction with the following drawings.

FIG. 1 illustrates an example system including a source device, a targetdevice, and a media delivery system.

FIG. 2 illustrates a process for using audio to associate the targetdevice with credentials of a source device.

FIG. 3 illustrates a process for obtaining credentials associated withan account that caused playback.

FIG. 4 illustrates a process for operating the target device guest andprimary modes.

FIG. 5A illustrates a portion of an example media content playbacksystem for association via audio.

FIG. 5B illustrates a portion of an example media content playbacksystem for association via audio.

FIG. 6 illustrates an example set of data structures storable in a datastore.

DETAILED DESCRIPTION

The example embodiments presented herein are directed to systems,methods, and non-transitory computer-readable medium products forassociating a target device with credentials of a source device based onplayback of a media content item, such as a song. This is forconvenience only, and is not intended to limit the application of thepresent invention. After reading the following description, it will beapparent to one skilled in the relevant art how to implement thefollowing disclosure in alternative embodiments.

As used herein, “credentials” are data usable for authentication or togain access to particular content or services. In some of the exampleembodiments described below, credentials are associated with a firstaccount (e.g., credentials usable to log into or otherwise gain accessto services associated with a particular account). Credentials are usedto perform an authentication or association process with an applicationor server, such as using OAUTH 2.0, OPENID CONNECT (maintained by theOPENID FOUNDATION), SAML (maintained by OASIS of Burlington, Mass.), orother standards, protocols, or techniques. Other uses for, and examplesof, credentials will be apparent to one of skill in the art.

In some examples, the credentials are representative of a username andpassword for a first account of a service. In some instances, thecredentials are use-limited or time-limited, such as one-session-usecredentials or credentials that are valid for limited amount of time.

As used herein, “target device” refers to a computing device with whichcredentials are to be associated and “source device” refers to acomputing device with which the credentials are currently associated.

In an example use case, a smartphone has stored thereon an audiostreaming service application that communicates with an audio streamingservice that is remote from the smartphone. The application is beingexecuted by the mobile device and operating under a first account (e.g.,an account of a first user). The first user also wants to access theaudio streaming service using the first account on a nearby smartspeaker system. The smart speaker system is an Internet-connectedspeaker system that is controllable by a voice-based user interface. Thesmart speaker system is also able to play media content items from anaudio streaming service. For the speaker system to gain access to theaudio streaming service, and particularly under the first account, theuser causes the smart speaker to enter an association mode by saying“Ahoy speaker, give me access”. The user further causes the smart phoneto, either simultaneously or substantially simultaneously, play music onthe smartphone using the audio streaming service application. The smartspeaker system records a portion (also sometimes referred to as a“snippet”) of the music that is being played and communicates therecording to a server. The server identifies the music (e.g., using anaudio fingerprint service of a media identification engine), and usesthe identification of the music to locate the first account associatedwith the identified music. With the first account identified, the serverprovides credentials associated with the first account to the smartspeaker system, which enables the smart speaker system to access theaudio streaming service using the first account. To provide the userconfirmation, the server causes playback of the music to transition fromthe smartphone to the smart speaker system. Because the server has logsthat include the first account that caused playback, the server not onlycauses playback of the music in general, but also causes playback ofmusic within the same context as the played music (e.g., the album orplaylist from which the music was played on the smartphone) by lookingup the context in which the first account was operating.

Continuing the example use case, a second user having a second account(e.g., a friend of the first user) visits and wants to control the smartspeaker system from her tablet computer. The smart speaker systemincludes a guest-mode button. The second user instructs the smartspeaker system to enter a guest mode by pressing a guest-mode button onthe smart speaker system. The guest-mode button on the smart speakersystem, when selected, causes the smart speaker system to store thecredentials that the smart speaker system is currently associated with(e.g., the credentials of the first user that the smart speaker systemis using to access the audio streaming service using the first account).The selection of the guest-mode button further causes the smart speakersystem to record ambient noise via a microphone. The second user causesher tablet computer to play music using her account. The smart speakersystem records a portion of the music and communicates the recording toa server. Again, the server identifies the music within the recording,and uses the identifier (e.g., a song title or uniform resourceidentifier) corresponding to the music to find the account under whichthe streaming service played the identified music. This time, the serveridentifies the second (e.g., friend's) account as causing playback andassociates the second account with the smart speaker system. Forinstance, the server sends the credentials of the second account to thesmart speaker system or associates an identifier of the smart speakersystem with the second account such that the smart speaker system isauthorized to access services associated with the second account. Thesmart speaker system receives the credentials and flags them as beingguest credentials. The second speaker system can then play musicassociated with the second account. After the second user leaves and themusic playback stops, the smart speaker system enters a sleep mode,removes the credentials of the second account, and reassociates itselfwith the first user's credentials.

Among other advantages, embodiments disclosed herein allow for theassociation of an account with a nearby device by playing songs, music,podcasts, audiobooks, and other media content items. In contrast tousing audio steganography to transmit login tokens, the use of mediacontent items in the process provides several advantages. For example,the content need not necessarily be specially formatted (e.g., formattedto encode messages or data) for the purpose of logging in the account.This increases security by obviating the need to receive logincredentials audibly broadcast by a device or user. It also increasesuser flexibility by allowing the user to choose from a variety of mediacontent items to play for the purposes of logging in. Disclosedembodiments further allow the use of aesthetic audio (e.g., songs ormusic) in the process of associating the device rather than usingunnatural sounding audio that normally results from audio steganography.Further still, disclosed embodiments conserve computing resources byallowing the user to quickly play media content items at the targetdevice by combining association of the target device with the accountand also by providing media content for the target device to play. Otheradvantages will be apparent to one skilled in the art on considerationof the embodiments described herein.

System for Using Audio to Associate a Target Device with Credentials ofa Source Device

FIG. 1 illustrates an example system 100 including a source device 110,a target device 150, and a media-delivery system 504. In the illustratedexample, audio is played from the source device 110 to associatecredentials 111 with the target device 150. The source device 110 is amedia-playback device that stores the credentials 111 in memory of thesource device 110. The credentials 111 are data usable by a device toaccess specific services or content, particularly with reference to anaccount.

In an example, the media-delivery system 504 is a streaming audioservice. The source device 110 stores the credentials 111, which areassociated with an account that the user has with the streaming audioservice. In such an example, an application running on the source device110 uses the credentials 111 to access streaming audio servicesassociated with the account. The services can include, for example,audio playback services, library management services (e.g., a songlibrary, a playlist library, or an album library, among others), mediacontent purchasing services, taste profile services (e.g. servicesrelating to the likes and dislikes of the user), content sharingservices, and account management services, among others.

The source device 110 includes a media-playback engine 116. Themedia-playback engine 116 operates to cause playback of media contentitems. In many examples herein, the media content items are audiocontent items, such as music. In some examples, the media content itemstake other forms (e.g., visual content items, such as videos). Themedia-playback engine 116 receives a media content item 120 from themedia-delivery system 504 for local playback at the source device 110.In addition or in alternative, the media content item 120 can beprovided from another source (e.g., by being transferred from anothercomputer). The media content item 120 includes sufficient data to beplayed by the source device 110. In many examples, the media contentitem 120 is streamed in playable parts from the media-delivery system504 to the source device 110. In other instances, the media content item120 is provided as a whole item provided by the media-delivery system504 that is not playable until the entirety is downloaded.

In some examples, the media-playback engine 116 receives a selection ofa media content item 120 for playback from the user over a userinterface of the source device 110. In other examples, themedia-delivery system 504 or the media-playback engine 116 selects themedia content item 120 for playback without receiving a selection of aparticular media content item from a user.

The target device 150 is a computing device to which the credentials 111are to be provided. In many examples, the target device 150 alreadystores or is otherwise associated with credentials. For instance, thetarget device 150 stores credentials associated with an account of ownerof the target device 150. Nonetheless, the target device 150 provides aguest mode via which the credentials 111 are associated with the targetdevice 150. In the illustrated example of FIG. 1 and as furtherdescribed herein, the target device 150 obtains the credentials 111associated with the source device 110.

The source device 110 plays the media content item 120 using themedia-playback engine 116. Before or during playback of the mediacontent item 120, the target device 150 enters an association mode. Inan example, upon entering the association mode, the access managementengine 152 of the target device 150 activates one or more sound inputdevices associated with the target device 150 to record ambient noisenear the target device 150 to create an ambient noise recording 154.With the source device 110 sufficiently close to the target device 150,the ambient noise recording 154 will include the sound of the mediacontent item 120 being played by the media-playback engine 116. Thetarget device 150 (e.g., the access management engine 152 thereof) thensends the ambient noise recording 154 to the media-delivery system 504.

The media-delivery system 504 uses the media identification engine 190to identify a media content item contained within the ambient noiserecording 154. The identification of the media content and other signals(e.g., metadata associated with the ambient noise recording 154) arethen provided to the access management engine 192 of the media-deliverysystem 504.

The access management engine 192 uses the output of the mediaidentification engine 190 along with data regarding playback of mediacontent items from the media server application 584 to identify thesource of the media playback. The identity of the source of the mediaplayback can include one or more of a device identifier of a deviceassociated with playback (e.g., the identifier of the device that playedthe identified media content item), an identity of the credentialsassociated with playback, an identifier of an account associated withplayback, or other indications of the source of the media content itemin the ambient noise recording 154.

With source identified, the access management engine 192 providescredentials 122 associated with the identified source to the accessmanagement engine 152 of the target device 150. In some examples, thecredentials 122 are identical to the credentials 111. In other examples,the credentials 122 are similar to the credentials 111 but have one ormore different characteristics. Both credentials 111, 122 are associatedwith a same account, but the credentials 122 are flagged to distinguishthe credentials 122 from the credentials 111, for instance. Flagging thecredentials 122 provides benefits to revoking credentials 122 at a latertime (e.g., manually or automatically responsive to detecting that auser associated with the credentials 122 left the vicinity of the targetdevice 150) by allowing the credentials to be identified as, forexample, guest credentials. Further, the user may not want the targetdevice 150 (or other users thereof) to have full access to his or heraccount for purposes of privacy, security, or account managementpurposes. As a result, the credentials 122 being flagged can indicatethat the credentials 122 are associated with a more limited set ofpermissions than the credentials 111. The degree of similarity inpermissions of the credentials 111 and the credentials 122 ismodifiable, in an example.

The target device 150 uses the credentials 122 to access services orcontent provided by the media-delivery system 504. In an example,playback of the media content item 120 is transferred from the sourcedevice 110 to the target device 150 automatically in response to thetarget device 150 accessing the media-delivery system 504 using thecredentials 122. The transfer of playback provides an improved userexperience by serving as a confirmation that the association completedsuccessfully.

The source device 110 and target device 150 are illustrated as being asmartphone and a media streaming appliance, respectively, but thedevices 110, 150 can take a variety of forms, including, but not limitedto, laptop computers, desktop computers, media streaming appliances,smart speakers, Internet-of-things devices, and vehicle head units,among others.

Additional features of the system 100 and processes for providing accessbased on audio are described herein, such as in relation to FIG. 2,which describes a process for using audio to associate the target device150 with the credentials 111 of the source device 110.

Process for Using Audio to Associate a Target Device with Credentials ofa Source Device

FIG. 2 illustrates a process 200 for using audio to associate the targetdevice 150 with the credentials 111 of a source device 110.

In an example the process 200 is performed by a system including thesource device 110, the target device 150, the media identificationengine 190, the access management engine 192, and the media serverapplication 584. As illustrated, the process 200 includes variousoperations performed by the source device 110, the access managementengine 192, the media identification engine 190, the target device 150,and the media server application 584. In an example, the source device110 has one or more source device processing devices coupled to a sourcedevice memory device storing source device instructions which whenexecuted cause the one or more source device processing devices toperform one or more of the operations described herein. In an example,the target device 150 has one or more target device processing devicescoupled to a target device memory device storing target deviceinstructions which when executed cause the one or more target deviceprocessing devices to preform one or more of the operations describedherein. In an example, the media-delivery system 504 has one or moremedia-delivery system processing devices coupled to a media-deliverysystem memory device storing media-delivery system instructions whichwhen executed cause the one or more media-delivery system processingdevices to perform one or more of the operations described herein,including one or more operations described herein regarding the accessmanagement engine 192 and the media identification engine 190. Theprocessing devices and the memory devices are described in furtherdetail in relation to FIGS. 5A and 5B.

As illustrated, the process 200 begins with operation 202 or 211.

At operation 202, the source device 110 requests playback of a mediacontent item. In many examples, requesting playback includes the sourcedevice 110 sending a request for a media content item from the mediaserver application 584.

In an example, this operation 202 is performed automatically in responseto the source device 110 detecting over a user interface (e.g., a touchscreen user interface or an utterance-based user interface) that a mediacontent item is selected for playback by a user. In some instances,selection of a particular media content item is received. In otherinstances, selection of a kind of media content item is received (e.g.,a shuffle album user interface element is selected). The source device110 sends a request including an identification of the selected mediacontent item to the media server application 584. In an example, therequest is based on or includes the credentials 111.

In other examples, the operation 202 is performed automatically inresponse to the source device 110 detecting over a user interface thatan audio-association user interface element is activated. Anaudio-association user interface element is an element activatable by auser, using audio to associate a target device with credentials of thesource device 110. Where the operation 202 is performed in response toactivation of an audio-association user interface element, the sourcedevice 110 sends a message requesting a media content item to the mediaserver application 584, and the message is flagged with an indicationthat the playback request is part of a request to associate the sourcedevice 110 with a target device. In such instances, the source device110 provides additional information with the request usable foridentifying the account during the association process. For instance,the request can include additional metadata regarding the device,including its location, altitude, and nearby WI-FI SSIDs (Set ServiceIdentifiers), among other data.

In other examples, requesting playback in operation 202 includes thesource device 110 requesting playback of media content stored locally atthe source device 110. For instance, receiving a request over a userinterface to play a media content item located on the source device 110(e.g., in a cache or having previously been downloaded responsive to arequest to offline the media content item from a user). In suchinstances, source device 110 plays the media content item withoutneeding to obtain the media content item from the media serverapplication 584. As a result, after requesting playback in operation202, the flow would move to operation 208 rather than operation 204.

At operation 204, the media server application 584 processes theplayback request from the source device 110. Processing the playbackrequest includes a variety of steps, including, but not limited to,extracting relevant information from the request. The media serverapplication 584 extracts an identification of the requested mediacontent item from the request. In some examples, the media serverapplication 584 extracts further information from the request, such asthe location of the target device, and information regarding therequesting account, among other data.

In many instances, processing the request includes selecting a mediacontent item associated with the request (e.g., a media content itemassociated with a media content identifier contained in the request)from a store of media content items available at the media serverapplication 584.

Processing the request further includes storing information associatedwith the request at the media server application 584, such asinformation obtained directly from, or inferred from, the request sentin operation 202. In many instances, the information is related tologging which account requested which media content item for playback atwhich time. In other instances, the media server application 584 storesadditional information associated with the request, such as may beprovided when the request is expressly flagged as being part of anassociation request.

When the request is flagged as being part of an association request, anda specific media content item does not accompany the request, additionalprocessing is able to be performed to choose an appropriate mediacontent item with which to fulfill the request, such as selecting amedia content item that matches a taste profile associated with thesource device 110 that nonetheless is not being played by a significantnumber of other devices or accounts at the time. In further instances,processing an expressly flagged request can cause the media serverapplication 584 to modify a media content item prior to sending it tothe source device 110 for playback, such as by adding a watermark (e.g.,a particular frequency outside of a human hearing range), modifying oneor more properties of the media content item to make it more easilyrecognizable (e.g., boosting certain frequencies), encoding a tokenassociated with the account of the source device 110, encoding data inan audio signal and mixing the signal into the media content item, amongothers. In some instances, the modifications are performed by the sourcedevice 110 rather than the media server application 584. In an example,processing a flagged request includes updating an entry in a data storereflecting that an account is or credentials are participating in anassociation process.

At operation 206, the media server application delivers the mediacontent item to the source device 110. This operation 206 can includestreaming portions of the media content item 120 to the source device110. Portions of the media content item 120 are streamed to the sourcedevice 110 and stored in a buffer for playback, for instance. In otherexamples, this operation 206 includes downloading substantially theentire media content item 120 to the source device prior to playback.

At operation 208, the source device 110 plays the media content item120. For example, the source device receives the media content item 120,and the source device 110 plays the media content item 120 from a bufferof the source device 110. In another examples, the source device 110plays the media content item 120 from a cache or other location local tothe source device 110.

At operation 209, the source device 110 sends a playback receipt to themedia-delivery system (e.g., the media server application 584 thereof).In an example, the source device 110 sends the playback receipt whereplaying media content item 120 includes playing the media content item120 locally from the source device 110. In some examples, the sourcedevice 110 stores data associated with playback in a playback receipt. Aplayback receipt can include data regarding the playback, such as thetime that the playback was initiated, the length of time the mediacontent item was played, the identifier of the media content item thatwas played, and the account associated with the playback, among otherdata. The source device 110 periodically sends playback receipts to themedia-delivery system 504.

At operation 210, the media-delivery system 504 processes the playbackreceipt. The media-delivery system 504 receives the receipts and updatesa data store with the associated data. The media-delivery system 504uses the receipts and associated data for a variety of purposes,including diagnostics, updating a user's taste profile, and royaltycalculations, among others. The receipts and the data contained thereinare further relevant to identifying an account that caused playback of amedia content item as described herein.

At operation 211, the target device 150 enters an association mode.Before or after the source device 110 requests playback in operation202, the target device 150 enters an association mode. The target device150 can enter the association mode in response to a variety of causes.In some examples, the target device 150 automatically enters theassociation mode responsive to determining that the target device 150 isattempting to operate without credentials. For instance, the targetdevice 150 was activated for a first time and was not preconfigured withan account. In other examples, the target device 150 finished a log-outmode in which the target device 150 disassociated itself from particularcredentials. In other examples, the target device 150 receives a signalfrom another device (an electronic signal or an acoustic signal, amongothers) that causes the target device 150 to enter the association mode.In still other examples, the target device 150 enters the associationmode, responsive to the target device 150 receiving a user input. In anexample, the target device 150 receives the utterance “enter associationmode” as user input via an utterance-based user interface, and entersthe association mode in response thereto. In another example, the targetdevice 150 detects that a tactile or virtual button has been selected ona user interface, and enters the association mode in response thereto.

In entering the association mode, the target device 150 prepares tobecome associated with regular credentials. In the illustrated example,responsive to entering the association mode, the target device 150prepares to record ambient noise. The target device 150 activates one ormore sound input devices, for instance. Where the target device 150 isalready associated with credentials, entering the association modefurther includes disassociating the target device 150 from existingcredentials. In still further examples, entering the association modetakes different forms depending on the kind of association modeselected. The target device 150 is able to operate in a variety ofmodes, each mode having its own characteristics and permissions. Thetarget device 150 is able to be operated in a guest mode and a primarymode, for instance. Operating in a guest mode includes the target device150 temporarily being associated with particular credentials. Forinstance, rather than target device 150 removing existing credentials,those credentials are stored locally to the target device 150 for lateruse, such as after the guest mode ends. In still other examples,entering the guest mode includes the target device 150 setting a limiton one or more features of the target device 150. For instance thetarget device 150 prevents one or more features of the target device 150from being used by the guest account.

At operation 212, the target device 150 records ambient noise. Thetarget device 150 activates one or more sound input devices to obtainthe ambient noise recording 154. In some examples, this includes thecreation of an audio clip of the ambient noise. In other examples,recording the ambient noise includes establishing a streaming connectionwith a remote device (e.g., the media identification engine 190). Forinstance, target device 150 records the ambient noises to a buffer atthe target device 150, and the contents of the buffer are streamed tothe target location.

At operation 214, the target device 150 sends an association requestthat includes the ambient noise recording 154 for identification. Theimplementation of sending the ambient noise recording 154 foridentification varies, depending on how the ambient noise recording 154is produced. As previously described, recording ambient noise caninclude streaming the ambient noise recording 154 to a remote locationas it is occurring or storing the ambient noise recording 154 as anaudio file for transmission once the recording ceases. The target device150 sends the ambient noise recording 154 for identification by themedia identification engine 190.

In the illustrated example, the target device 150 records the ambientnose 212 in operation 212 after the source device 110 plays the mediacontent item in operation 208. In this manner, prior to receiving theassociation request, the media server application 584 receives, from thesource device 110, the media content item playback request for the mediacontent item 120, and causes playback of the media content item 120 atthe source device 110, thereby fulfilling the media content itemplayback request. The media source device 110 is associated with theaccount 342.

In some instances, the target device 150 sends the ambient noiserecording 154 by accessing an application programming interface (API) ofthe media identification engine 190. Accessing the API includesperforming an API call and providing the ambient noise recording 154 asa parameter (e.g., the audio file, an address of the audio file, alocation to which the audio file was streamed, or a location from whichthe audio file was streamed) to the API call. Other parameters are alsoable to be provided via the API call. For instance, a location of thetarget device 150 and an altitude of the target device 150, amongothers. In an example, the access management engine 192 or anotherportion of the media-delivery system 504 exposes an API where audio,time, and location, are submitted, and the access management engine 192will return a URI (uniform resource identifier) of the media contentitem associated with the audio, as well as a context from which themedia content item was played. In some instances, the target device 150sends the ambient noise recording 154 directly to the mediaidentification engine 190. In other examples, the target device 150sends the ambient noise recording 154 to an end point of a remote mediacontent server 580, and the media content server 580 then provides themedia identification engine 190.

At operation 216, the media identification engine 190 receives theassociation request and identifies a media content item associated withthe ambient noise recording 154. In an example, operation 216 includesthe media-identification engine receiving the association request fromthe target device 150, the association request having the ambient noiserecording 154 that includes at least a portion of the media content item120. The media identification engine 190 then identifies an identifierof the media content item 120 based on the ambient noise recording 154.The media identification engine 190 is able to identify the mediacontent item 120 via any of a variety of techniques. In an example, themedia identification engine 190 performs audio fingerprinting on theambient noise recording 154 to obtain an audio fingerprint of theambient noise recording 154. In this manner, identifying the identifierof the media content item 120 includes audio fingerprinting. The mediaidentification engine 190 then compares the audio fingerprint of theambient noise recording 154 to audio fingerprints of known media contentitems. If the media identification engine 190 identifies a sufficientlyclose match, then the media identification engine 190 associates theambient noise recording 154 with the matched media content item. Forinstance, the media identification engine 190 tags the ambient noiserecording 154 with an identifier of the matched media content item. Inan example, the identification is based solely on audio fingerprintingof the ambient noise recording 154 and is not based on a concealedmessage or token within the ambient noise recording 154 (e.g., not basedon a message concealed in the ambient noise recording 154 using audiosteganography).

An example of a usable audio fingerprinting technique is described inU.S. Pat. No. 8,492,633, which describes a method for fingerprinting anunknown music sample. Known music tracks are segmented into referencesamples, and for each sample a reference fingerprint including aplurality of codes is generated. An inverted index including, for eachpossible code value, a list of reference samples having referencefingerprints that contain the respective code value is generated. Anunknown fingerprint including a plurality of codes is generated from anunknown music sample. A code match histogram lists candidate referencesamples and associated scores, each score indicating a number of codesfrom the unknown fingerprint that match codes in the referencefingerprint. Time difference histograms are generated for two or morereference samples having the highest scores. A determination is madewhether or not a single reference sample matches the unknown musicsample based on a comparison of the time difference histograms. As aresult of the comparison, the unknown music sample can be identified.Other techniques are usable as well.

In some examples, multiple potential matches are identified. Forinstance, the same song may appear on multiple different albums, such asits original album, a greatest hits album, a movie soundtrack, acompilation album, and so on. Depending on the configuration of a medialibrary or a fingerprinting database, these recordings may each have adifferent identifier associated with them. In such instances, if thereare multiple sufficiently close media content items, then they can allbe selected and used.

The media identification engine 190 sends the one or more identities ofthe media content item to the access management engine 192. The mediaidentification engine 190 further sends additional information regardingthe media content item to the access management engine 192.

At operation 218, the access management engine 192 receives the one ormore identifiers of the media content item from the media identificationengine 190. The access management engine 192 can also obtain additionalinformation from another source. For instance, where the recording issent from the target device 150 to the media-delivery system 504, theaccess management engine 192 obtains further data from another portionof the media-delivery system 504, such as further data regarding theidentified media content item, recording, and the circumstances of therecording.

At operation 220, the access management engine 192 determines an accountthat caused playback of the media content item. The access managementengine 192 determines the account in a variety of ways. In an example,the access management engine 192 determines whether a single accountrecently played a media content item having the one or more identifiers(e.g., by comparing the identifiers with entries in a media playback logor database of the media server application 584). If a single account isidentified, then the access management engine 192 identifies that singleaccount as the account that caused playback of the media content item inthe recording.

The access management engine 192 can use further parameters fordetermining which account played the media content item. For example, aspart of the identification of the media content item in operation 216,the media identification engine 190 can further estimate a start time ofthe media content item. For instance, the media identification engine190 can use characteristics of the recording to determine which portionof a media content item was played and calculate backwards from thatpoint to determine when the playback the media content item was likelyto been initiated in order for the recording to include that portion ofthe media content item at that time. In such instances, the accessmanagement engine 192 can compare the estimated start time with themedia content item playback of the recording and identify the mediacontent item with timestamps of when the account initiated playback ofthe media content item. If the time stamp of an account is sufficientlyclose to the estimated start time, then the account is selected as acandidate account for being the account that initiated playback of themedia content item.

In still further examples, the access management engine 192 useslocation as a determining factor. For instance, the access managementengine 192 receives, in addition to the one or more identifications ofthe media content item, a location of the target device 150. Thelocation can have various levels of specificity, including, but notlimited to, region, continent, country, state, province, city, county,ZIP Code, and GPS location, among other location information.

The access management engine 192 compares the location of the targetdevice 150 with the locations of the devices that are candidates forplayback of the media content item. The access management engine 192uses a similarity in a location as an indication that a candidateaccount caused playback of the media content item. In further examples,elevation or altitude information are used to determine whether anaccount caused playback of media content item. For instance, two usersplaying the same song at substantially the same time in a same denseurban area (e.g., an office or apartment building) may havesubstantially similar locations, but would likely send differentelevation information if the users are located on different floors.

The access management engine 192 uses one or more of the aboveparameters to identify a single account that caused playback of themedia content item. In an example, the operation 220 includes selectingan account from an account data store based on the identifier of themedia content item 120.

If no account is identified, or if multiple candidate accounts areidentified with the available information, the access management engine192 executes a remedial process. For instance, if no accounts areidentified as having caused playback of the media content item, then theaccess management engine 192 sends a message to the target device 150indicating an error and prompting the target device 150 to try again. Ifthere are too many candidate accounts, the access management engine 192sends a message to devices associated with the candidate accounts askingthe devices for more information (e.g., location information or moreprecise location information). In an example, the access managementengine causes the target device 150 to display a particular code (e.g.,a string of letters or numbers) and requests that users of devicesassociated with the accounts enter in the code displayed on the targetdevice 150 (e.g., via an SMS message, an in-app message, or in othermanners). If the access management engine 192 receives a response from adevice with the particular code, then the access management engine 192selects the account associated with the response as the account thatinitiated playback.

In other instances, the access management engine 192 causes the mediaserver application 584 to modify delivery of the media content itemassociated with the accounts. For instance, the media server application584 inserts a unique watermark into the media content items being playedby the candidate accounts. Simultaneously, the access management engine192 sends a message to the target device 150 to reinitiate recording ofambient noise. The target device 150 reinitiates recording and sends thereinitiated recording to the media identification engine 190 foranalysis. The media identification engine 190 detects the presence orabsence of the unique watermark in the reinitiated recording, which theaccess management engine 192 uses to identify the account that causedplayback.

At operation 222, the access management engine 192 provides credentialsto the target device 150. The access management engine 192 obtains thecredentials of the account identified as having caused playback of themedia content item in operation 220. For instance, the access managementengine 192 selects the credentials from a data store that stores accountcredentials. In other instances, the access management engine 192generates new credentials associated with the account for providing tothe target device 150. The access management engine 192 provides thecredentials to the target device 150 for use in causing media playbackor taking another action. In an example, the operation 222 includesassociating then target device 150 with the account.

At operation 224, the target device 150 receives the credentials. Thereceived credentials are stored locally at the target device 150 for usein accessing services (e.g., services provided by the media serverapplication 584). In instances where the credentials are for use in aguest mode, the credentials are stored in a temporary area (e.g., atemporary data structure in a data store on the target device 150) orare stored in association with a time limit.

In some instances, the access management engine 192 does not providecredentials in operation 220. Instead the access management engine 192provides an identifier associated with credentials. For instance, thismay be used where the target device 150 already includes multipledifferent sets of credentials, and the target device 150 uses theprovided identifier in order to select which of the locally storedcredentials to use.

At operation 226, the target device 150 uses the received credentials toaccess services associated with the media server application 584. Forinstance, the target device 150 sends a playback request to the mediaserver application 584 that includes the credentials (or a token basedthereon). In some instances, the access is performed automatically(e.g., to confirm that the credentials are usable). In other instances,the access is performed in response to a user request.

At operation 228, the media server application transfers playback of themedia content item from source device 110 to the target device 150. Themedia server application 584 begins transferring playback of the mediacontent item identified in the recording from the source device 110 tothe target device 150. In an example, the operation 228 includes,responsive to associating the target device 150 with the account 342,transferring the playback of the media content item 120 from the sourcedevice 110 to the target device 150. The operation 228 is able to beperformed in a variety of ways. In an example, the media serverapplication 584 causes the source device 110 to cease playback, and themedia server application 584 causes the target device 150 to initiateplayback of the media content item.

In an example, the operation 228 includes determining a start pointwithin the media content item that is synchronized with playback of themedia content item that is played back by the source device 110. Themedia server application 584 then causes playback of the media contentitem at the source device 110 to stop. The media server application 584then causes playback of the identified media content item at the targetdevice 150 based on the start point.

At operation 230, the source device 110 ceases playback of the mediacontent item. In an example, the source device 110 ceases playbackresponsive to receiving a cease playback message from the media serverapplication 584. In some instances, the ceasing of playback happens inreal time, responsive to the source device 110 receiving a ceaseplayback message from the media server application 584. In examples, thecease playback message includes a timestamp indicating a time at whichto cease playback and a fade-out period over which to fade playback ofthe media content item (e.g., gradually reducing the volume of audiobeing played back in association with the media content item). In suchexamples, the operation 230 would include, for example, sending afade-out message to cause playback of the media content item 120 to fadeout at the source device 110 and sending a fade-in message to causeplayback of the media content item 120 to fade-in at the target device150.

At operation 232, the target device 150 plays the media content item. Insome instances, the media server application 584 begins transmitting themedia content item content to the target device 150 instead of to thesource device 110. In other instances, such as in order to avoidstuttering in audio playback, the media server application 584 transmitsthe media content item simultaneously to both the source device 110 forplayback and the target device 150 for playback. In this manner, theremay be a period of overlap where both the source device 110 and thetarget device 150 are playing the media content item before the sourcedevice 110 ceases playback in operation 230. In other instances, thetarget device 150 receives at least a portion of the media content itemfrom the media server application 584 along with instructions to delayplayback of the media content item until a particular time. The delayprovides time for the target device 150 to buffer the media contentitem, which promotes stutter-free playback of the media content itemwhen the target device 150 begins playback. In some examples, the targetdevice 150 receives an instruction that playback of the media contentitem fades in over time. The fade-in by the target device 150compliments the fade-out by the source device 110 and provides anindication to the listener that the target device 150 is successfullyassociated with the account. As a result, the target device 150 startsplayback of the media content item at a location other than thebeginning of the media content item (e.g., in the middle of the mediacontent item in a location synchronized with the playback by the sourcedevice 110).

The target device 150 need not only play the media content item. Thetarget device 150 further plays the media content item from the samecontext (e.g., playlist or album) from which the source device 110 wasplaying. For example, as part of the transfer of playback in operation228, the media server application 584 determines the playback context ofthe account using a playback log or database, and plays the mediacontent item 232 from that context at the target device 150.

Process for Obtaining Credentials Associated with an Account

FIG. 3 illustrates a process 300 for obtaining credentials associatedwith an account that caused playback. In an example, the process 300 isperformed by the access management engine 192.

At operation 310, an identifier 312 of a media content item is received,such as a uniform resource identifier of the media content item. In anexample, the access management engine 192 receives the identifier 312 ofthe media content item from the media identification engine 190. Theidentifier 312 is a URI (Uniform Resource Identifier) or otheridentification of the media content item.

At operation 320, one or more additional signals 322 are received fromthe target device 150. In an example, the access management engine 192receives the one or more signals 322. The one or more signals 322 aredata usable to identify a source of playback of the media content item.In the illustrated example, the signals 322 include an estimated starttime of the media content item. In an example, the playback start timeof the media content item 120 is estimated (e.g., based on the signals322) and the account is selected from the data store based on theplayback start time. In the illustrated example, the signals 322 furtherinclude an estimated location of the target device 150, and an altitudeof the target device 150. The signals 322 are obtained directly from thetarget device 150 or are inferred regarding the target device 150. Insome instances, the information is a last known value, such as alast-known location information. Location information takes variousforms and levels of granularity. In some instances, the locationinformation includes GPS coordinates, an address, a street name, aneighborhood name, a city name, a county name, a state name, a provincename, a region name (e.g., U.S. East), a country name, a continent name,or others. In some instances, the location information includes anindication of accuracy or estimate of the location (e.g., accuratewithin 500 feet). In some instances, the one or more signals 322 includeadditional signals contained within the recording (e.g., a watermark,identifications of other sounds within the recording, and sonicqualities of the recording such as echoes, among others), an indicationwhether the target device 150 is moving, or an indication of a networkpath the target device 150 used to send the recording (e.g., using atraceroute command), among others.

At operation 330, a likelihood that a particular account caused playbackof the identified media content item is determined. In an example, theoperation 330 includes selecting an account 342 from an account datastore 332 based on the identifier 312 of the media content item 120.This likelihood is able to be determined in a variety of different ways.In some instances, an account data store 332 containing account playbackinformation is used as the basis for determining which account likelycause playback. The account data store 332 is maintained by the mediadelivery system 504. In an example, the media server application 584maintains the account data store 332. For instance, when amedia-playback engine requests playback of the media content item, themedia server application 584 updates the account data store 332 withrelevant information (e.g., a device identifier of the device from whichthe media-playback engine requests playback). In this manner, theaccount data store 332 is a media playback log. In many instances, thedata store includes an identifier of an account as well as an identifierof a particular media content item that the account is currentlyplaying, if any. The account data store 332 can include furtherinformation, such as when playback of the media content item wasinitiated (e.g., when the request for playback was sent from themedia-playback engine 116, when the request was received by the mediaserver application 584, when the media server application 584 fulfilledthe request, or when the media-playback engine 116 initiated playback ofthe received media content item, among others). The account data store332 can further include information, such as a device identifier of thedevice at which the account is playing a media content item and alocation of the device, among other data. The location includesinformation such as an IP address of the device (e.g., an address towhich media content items are sent), a location of the device, a routeto the device (e.g., as the result of a trace route command), analtitude of the device, movement information of the device (e.g.,whether the device is moving, whether the device is accelerating,vibrations received at the device, among other data), among other data.In an example, selecting the account 342 from the account data store 332is further based in part on the one or more signals 322.

The data in the account data store 332 can be handled according to adefined user privacy policy. In some embodiments, data elsewhere in thesystem 100 can be handled according to a defined user privacy policy.Generally, data can be used to the extent allowed by the user. Inexamples, the system 100 provides customizable privacy parameters. Forinstance, the system 100 maintains one or more privacy parametersdirecting components of the system 100 as to what data may be stored andhow the data is used. One or more parameters are user-customizable, suchas through a voice command (e.g., “ahoy computer, don't store what Isay” or “ahoy computer, I like my privacy!”). In an example, the system100 disallows authentication based on playback of a media content itemunless allowed by the privacy parameters. In some examples, the storageof data is based on a location of the source device 110 or the targetdevice 150. For instance, the system 100 receives the location of thedevices 110, 150 and determines privacy settings based thereon. Inaddition, the data contained in the account data store 332 is stored inaccordance with applicable regulations. Data can also be stored and usedin association with a defined security policy. For example, data can beencrypted at rest and in motion. For instance, ambient noise recordingare encrypted during transmission and encrypted while stored. In anexample, transmission channels (e.g., for the ambient noise recordings)are authenticated in a manner other than using user credentials, such asusing data regarding the device itself.

In an example, the account data store 332 is queried based on theidentifier 312 and the signals 322. In instances where the account datastore 332 includes a database of the relevant account information, thedatabase is queried using the identifier 312 and the signals 322. Inother instances, the access management engine 192 iterates through oneor more of the accounts and calculates a likelihood that the respectiveaccount caused playback. The various data stored in the account datastore 332 can have various weights usable in calculating the likelihoodthat the particular account caused playback. For instance, theidentifier of the song that the respective account played is heavilyweighted in the calculation, such that accounts that did not play therespective media content item have a low likelihood of being identifiedas the account that caused playback.

Aspects such as start time may be weighted heavily as well, but theremay be some variance allowed to account for various factors indiscrepancies in time (e.g., due to system clocks being off, or due todifferences in when the time was recorded). In further examples, thelack of data may be dispositive in some instances and may be highlyrelevant in others. For instance, a device in which the playback wasinitiated (e.g., source device 110) may not include a GPS device or mayotherwise be unable to obtain a location. The lack of location for sucha device need not disqualify an account associated with that device as apotential candidate. However, in some instances, where an account hasnot played a particular media content item at all may weigh heavilyagainst that account being the one that caused playback, even if manyother parameters match (e.g., location). In many instances, bothfiltering and analysis are used. For example the account data store 332is filtered according to those accounts playing a particular mediacontent item, and then the likelihood that those filtered accountscaused playback is determined. In an example, a machine learningframework is used to determine the likelihood that a given accountcaused playback (e.g., a neural network trained to determine likelihoodthat an account initiated playback, a decision tree, or aheuristic-based framework, among others). The machine learning frameworkreceives the signals 322 and the identifier 312 as input. As output, themachine learning framework provides a confidence level that an accounthaving the identifier and signals caused the playback in question.

At operation 340, credentials 344 associated with the account 342identified in operation 330 are obtained. For example, credentials 344are stored at and obtained from the media-delivery system 504 (e.g., aspart of the access management engine 192). In an example, thecredentials 344 are stored in and obtained from a database or other datastructure, and indexed based on account 342. In an example, thecredentials 344 are stored in the account data store 332. In otherexamples, the access management engine 192 generates credentials for useby the target device 150. The account 342 identified in operation 330 isused to select the relevant credentials 344. The credentials 344 arethen sent to the target device 150 or otherwise provided for use. Inother examples, a device identifier of the target device 150 is added toan authorized list of devices for the account 342. In an example, theoperation 340 includes associating the target device 150 with theaccount 342 by providing the credentials 344 to the account.

Process for Guest and Primary Modes

FIG. 4 illustrates a process 400 for operating the target device 150 inguest and primary modes. The process 400 begins with operation 410.

At operation 410, the target device 150 operates in a primary mode 412associated with a first account 414. In an example the primary mode 412is a mode in which the target device 150 will remain indefinitely untila log out or switch account command is executed. In many examples, theprimary mode 412 is a mode associated with an account (e.g., the firstaccount 414) of an owner of the target device 150. Operating the targetdevice 150 in the primary mode 412 associated with a first account 414includes the target device 150 using the first account 414 to accessservices or content associated with the first account 414. For example,the target device 150 is a smart speaker, and obtains media contentitems on behalf of the first account 414. This includes, for example,the target device 150 accessing a library of media content itemsassociated with the first account 414, and obtaining items according toa taste profile associated with the first account 414, among otheractivities.

In an example, the target device 150 is a media playback appliance, andthe operation 410 includes operating the media playback appliance in theprimary mode 412 associated with the first account 414.

While operating in the primary mode 412, the target device 150 receivesa guest mode signal. The guest mode signal is a signal (e.g., message,command, or other signal) that causes the target device 150 to begin theprocess of entering a guest mode (e.g., transition to operation 420).The target device 150 receives the guest mode signal in any of a varietyof ways. In an example, the target device 150 receives the guest modesignal over a voice-based user interface. For instance, the targetdevice 150 receives the utterance “enter guest mode”, which the targetdevice 150 analyzes (e.g., using natural language processing) andexecutes a guest mode process in response thereto. In another example,the target device 150 has a tactile or virtual button that, whenactivated, causes the target device 150 to enter a guest mode.

Continuing the media playback appliance example, responsive to receivinga guest mode signal, the media playback appliance creates the audiorecording 154 using a sound sensing device of the media playbackappliance. The audio recording 154 contains audio associated with amedia content item 120 played by the source device 110 associated with asecond account. The media playback appliance then provides the audiorecording 154 from the media playback appliance to a remote server foridentification of the media content item 120. For instance, the mediaplayback appliance performs an application programming interface callwith the recording 154 and a location of the media playback appliance asparameters of the application programming interface call.

At operation 420, the target device 150 operates in a guest mode 422associated with a second account 424. This includes, the target device150 operating according to credentials associated with the secondaccount 424. The credentials can be obtained using any of a variety oftechniques described herein, including but not limited to thosedescribed in relation to process 200 in FIG. 2.

Continuing the media playback appliance example, the operation 420includes operating the media playback appliance in a guest mode 422associated with a second account 424 based on the identification of themedia content item 120. This can include receiving credentials 111associated with the second account 424 at the media playback applianceand operating in the guest mode 422 using the credentials. In a furtherexample, after beginning to operate in the guest mode 422, the mediaplayback appliance receives, from a media server application, at least aportion of the media playback item 120 and plays the media content item120. Playing the media content item 120 can include starting playback ofthe media content item 120 at a location other than a beginning of themedia content item 120.

Operating in the guest mode 422 takes various forms. In some instances,operating in the guest mode 422 includes the target device 150 operatingwith a limited set of permissions compared to the primary mode 412. Forinstance, while operating in the guest mode 422, the target device 150may be unable to perform one or more of the following actions:downloading tracks to the target device 150, modifying an equalizer ofthe target device 150, changing wireless settings of the target device150, changing security settings of the target device 150, changing anownership of the target device 150, changing account management settingsof the target device 150, playing explicit tracks on the target device150, locking the device, and obtaining primary mode status on the targetdevice 150, among other permissions.

In an example, the guest mode 422 is a mode associated with a limitedamount of time. For example, the target device 150 operates in the guestmode 422 with the second account 424 for a limited amount of time (e.g.,one hour, one day, one week, one month), until a certain number of mediacontent items are played (e.g., playback of one, two, three, or moremedia content items), until the occurrence of a particular event (e.g.,receiving a revert command, detecting the presence of a deviceassociated with the first account) or another event. In another example,the target device 150 operates in the guest mode 422 until a reversionsignal is received. In an example, receiving the reversion signalincludes receiving user input associated with reverting to the primarymode 412 over a user interface (e.g., receiving an utterance over avoice-based user interface of the target device 150 or receiving anindication that a virtual or physical user interface element associatedwith reversion has been actuated). In an example, when operating in theprimary mode 412, the target device 150 can modify the permissions ofthe guest mode 422 (e.g., based on user input).

In another example, the target device 150 operates in the guest mode 422until a device power event occurs. For instance, the target device 150operates in the guest mode until the target device 150 powers on, powersoff, enters a sleep mode, enters an inactive state, enters an activestate, wakes up, restarts, loses power, or gains power, among others.The target device 150 then reverts to the primary mode 412 with thefirst account 414.

In some examples, operating in a guest mode 422 includes the targetdevice 150 storing credentials of the account (e.g., the first account414) associated with the primary mode 412. In an example, the targetdevice 150 stores credentials associated with the account (e.g., thefirst account) associated with the primary mode 412 in memory for lateruse. Storing the credentials in memory facilitates the target device 150reverting from, for example, operating in the guest mode 422 with thesecond account 424 to operating in the primary mode 412 with the firstaccount 414 without re-receiving the credentials associated with thefirst account 414, which saves the user time and reduces resourceconsumption (e.g., by not requiring the user associated with the firstaccount 414 to re-log into the target device 150).

At operation 430, the target device 150 reverts to the primary mode 412associated with the first account 414 from the guest mode 422 associatedwith the second account 424. The reversion is triggered by one or moreof the conditions or criteria described in operation 420. Reverting caninclude accessing credentials associated with the first account 414 thatare stored locally to the device. In some examples, reverting includesobtaining the credentials from a remote server (e.g., the target device150 accessing an application programming interface associated with theaccess management engine 192 at the media-delivery system 504).

Continuing the media playback appliance example, operation 430 includesresponsive to the media playback appliance receiving a reversion signalwhile operating in the guest mode 422 associated with the second account424, operating the media playback appliance in the primary mode 412associated with the first account 414. In an example, the media playbackappliance automatically reverts to the primary mode 412 associated withthe first account 414 after the occurrence of an event, such as a devicepower event.

Other Embodiments

Although this application is primarily described in relation to audio,the systems and methods described herein can be applied to other contentincluding visual content. For instance, rather than the target device150 receiving audio content via a microphone or other input mechanisms,the target device 150 can use a camera to obtain visual informationprovided at a display of the source device 110. In an example, thesource device presents a visual media content item (e.g., a televisionshow, a movie, a piece of art, a webpage having particular visualcharacteristics, text content, among others). This visual content isthen sent to the media-delivery system 504 for processing. A mediaidentification engine at a media-delivery system 504 can identify thevisual content in the way described above, except in relation to visualcontent.

Device Environment

FIG. 5A and FIG. 5B, illustrate an example system 500 for associationvia audio. The example system 500 is a media content playback system forassociation via audio and includes the source device 110 including amedia-playback engine 116 and the target device 150 communicativelycoupled across a network 506 to a media-delivery system 504.

Source Device

The source device 110 plays media content items to produce media output.In some embodiments, the media content items are provided by themedia-delivery system 504 and transmitted to the source device 110 usingthe network 506. A media content item is an item of media content,including audio, video, or other types of media content, which may bestored in any format suitable for storing media content. Non-limitingexamples of media content items include songs, music, albums,audiobooks, music videos, movies, television episodes, podcasts, othertypes of audio or video content, and portions or combinations thereof.

The source device 110 plays the media content for the user. The mediacontent is also picked up by the target device 150 via a sound-sensingdevice 564. The media content is selectable for playback with userinput. The media content is also selectable for playback without userinput, such as by the source device 110 or the media-delivery system504. In an example, media content is selected for playback by themedia-delivery system 504 based on stored user taste profile informationand other criteria.

The source device 110 selects and plays media content and generatesinterfaces for controlling playback of media content items. In someexamples, the media-playback engine 116 receives input from a user overa user interface, such as a touch screen user interface, anutterance-based user interface, tactile user interfaces, virtual userinterfaces, or other user interfaces.

The source device 110 can include other input mechanisms, including, butnot limited to a keypad and/or a cursor control device. The keypad maybe configured for inputting alphanumeric characters and/or other keyinformation. The cursor control device may include, for example, ahandheld controller or mouse, a rotary input mechanism, a trackball, astylus, and/or cursor direction keys.

As noted above, the source device 110 plays media content items. In someembodiments, the source device 110 plays media content items that areprovided (e.g., streamed, transmitted, etc.) by a system external to themedia-playback device such as the media-delivery system 504, anothersystem, or a peer device. Alternatively, in some embodiments, the sourcedevice 110 plays media content items stored locally on the source device110. Further, in at least some embodiments, the source device 110 playsmedia content items that are stored locally as well as media contentitems provided by other systems.

In some embodiments, the source device 110 is a computing device,handheld entertainment device, smartphone, tablet, watch, wearabledevice, or any other type of device capable of playing media content. Inyet other embodiments, the source device 110 is a media playbackappliance, such as an in-dash vehicle head unit, an aftermarket vehiclemedia playback appliance, a smart assistant device, a smart home device,a television, a gaming console, a set-top box, a network appliance, aBLU-RAY disc player, a DVD player, a media player, a stereo system,smart speaker, an Internet of things device, or a radio, among otherdevices or systems.

In at least some embodiments, the source device 110 includes alocation-determining device 550, a user interface 552, one or moreprocessing devices 554, a memory device 556, a content output device558, a movement-detecting device, a network access device 562, asound-sensing device 564, and an optical-sensing device. Otherembodiments may include additional, different, or fewer components. Forexample, some embodiments do not include one or more of thelocation-determining device 550, the sound-sensing device 564, and theoptical-sensing device.

The location-determining device 550 is a device that determines thelocation of the source device 110. In some embodiments, thelocation-determining device 550 uses one or more of the followingtechnologies: Global Positioning System (GPS) technology which mayreceive GPS signals from satellites, cellular triangulation,network-based location identification, WI-FI positioning systems,ultrasonic positioning systems, and combinations thereof. Examples ofthe location-determining device 550 further include altitude- orelevation-determining devices, such as barometers.

The user interface 552 operates to interact with the user, includingproviding output and receiving input. The user interface 552 can be aphysical device that interfaces with the user (e.g., touch screendisplay) or a combination of devices that interact with the user (e.g.,speaker and microphone for providing an utterance-based user interface).

In some examples, the user interface includes a touch screen based userinterface. A touch screen operates to receive an input from a selector(e.g., a finger, stylus, etc.) controlled by the user. In someembodiments, the touch screen operates as both a display device and auser input device. In some embodiments, the user interface 552 detectsinputs based on one or both of touches and near-touches. In someembodiments, the touch screen displays a user interface for interactingwith the source device 110. As noted above, some embodiments do notinclude a touch screen.

Examples of the user interface 552 include input control devices thatcontrol the operation and various functions of the source device 110.Input control devices include any components, circuitry, or logicoperative to drive the functionality of the source device 110. Forexample, input control device(s) can include one or more processorsacting under the control of an application.

While some embodiments do not include a display device, the embodimentsthat do often include a graphics subsystem coupled to an output display,such as a TFT (Thin Film Transistor), TFD (Thin Film Diode), OLED(Organic Light-Emitting Diode), AMOLED display (active-matrix organiclight-emitting diode), and/or liquid crystal display (LCD)-typedisplays. The displays can also be touch screen displays, such ascapacitive and resistive-type touch screen displays.

The one or more processing devices 554 include one or more processingunits, such as central processing units (CPU), digital signalprocessors, and field-programmable gate arrays, among others.

The memory device 556 operates to store data and instructions. In someembodiments, the memory device 556 stores instructions for themedia-playback engine 116. Some embodiments of the memory device 556also include a media content cache 572. The media content cache 572stores media-content items, such as media content items that have beenpreviously received from the media-delivery system 504. The mediacontent items stored in the media content cache 572 are storable in anencrypted or unencrypted format, and decryption keys for some or all ofthe media content items are also stored. The media content cache 572 canalso store metadata about media-content items such as title, artistname, album name, length, genre, mood, or era. The media content cache572 can also store playback information about the media content items,such as the number of times playback of the media content item has beenrequested or the current location of playback.

The memory device 556 typically includes at least some form ofcomputer-readable media. Computer readable media includes any availablemedia that can be accessed by the source device 110. By way of example,computer-readable media include computer readable storage media andcomputer readable communication media.

Computer readable storage media includes volatile and nonvolatile,removable and non-removable media implemented in any device that storesinformation such as computer readable instructions, data structures,program modules, or other data. Computer readable storage mediaincludes, but is not limited to, random access memory, read only memory,electrically erasable programmable read only memory, flash memory andother memory technology, compact disc read only memory, BLU-RAY discs,DVD discs, other optical storage, magnetic cassettes, magnetic tape,magnetic disk storage, other magnetic storage devices, or any othermedium that can be used to store the desired information and that can beaccessed by the source device 110. In some embodiments, computerreadable storage media is non-transitory computer readable storagemedia.

Computer readable communication media typically embodies computerreadable instructions, data structures, program modules or other data ina modulated data signal such as a carrier wave or other transportmechanism and includes any information delivery media. The term“modulated data signal” refers to a signal that has one or more of itscharacteristics set or changed in such a manner as to encode informationin the signal. By way of example, computer readable communication mediaincludes wired media such as a wired network or direct wired connection,and wireless media such as acoustic, radio frequency, infrared, andother wireless media. Combinations of any of the above are also includedwithin the scope of computer readable media.

The content output device 558 operates to output media content. In manyexamples, the content output device 558 provides media output for auser. In some examples, the content output device 558 provides mediaoutput to a target device 150. Examples of the content output device 558include a speaker assembly having one or more speakers, an audio outputjack, a BLUETOOTH transmitter, a display panel, and a video output jack.Other embodiments are possible as well, such as transmitting a signalthrough the audio output jack or BLUETOOTH transmitter that can be usedto reproduce an audio signal by a connected or paired device such asheadphones, speaker system, or vehicle head unit.

The network access device 562 operates to communicate with othercomputing devices over one or more networks, such as the network 506.Examples of the network access device include one or more wired networkinterfaces and wireless network interfaces. Examples of wireless networkinterfaces include infrared, BLUETOOTH wireless technology,802.11a/b/g/n/ac, and cellular or other radio frequency interfaces.

In some examples, the source device 110 includes a movement detectingdevice that senses movement of the source device 110, acceleration ofthe source device 110, determines an orientation of the source device110, or includes other detecting devices. In at least some examples, thedetecting devices include one or more accelerometers or other motiondetecting technologies or orientation detecting technologies.

The network 506 is an electronic communication network that throughwhich the source device 110, the media delivery system 504, and thetarget device 150 communicate. An electronic communication networkincludes a set of computing devices and links between the computingdevices. The computing devices in the network use the links to enablecommunication among the computing devices in the network. The network506 can include routers, switches, mobile access points, bridges, hubs,intrusion detection devices, storage devices, standalone server devices,blade server devices, sensors, desktop computers, firewall devices,laptop computers, handheld computers, mobile telephones, vehicularcomputing devices, and other types of computing devices.

In various embodiments, the network 506 includes various types of links.For example, the network 506 can include wired and/or wireless links,including BLUETOOTH, ultra-wideband (UWB), 802.11, ZIGBEE, cellular, andother types of wireless links. Furthermore, in various embodiments, thenetwork 506 is implemented at various scales. For example, the network506 can be implemented as one or more vehicle area networks, local areanetworks (LANs), metropolitan area networks, subnets, wide area networks(such as the Internet), or can be implemented at another scale. Further,in some embodiments, the network 506 includes multiple networks, whichmay be of the same type or of multiple different types.

Target Device

The target device 150 can include one or more of the components of thesource device 110. The aspects described herein are relevant to using anaccount of the source device 110 on the target device 150. In anexample, the association is performed using a sound sensing device 564of the target device 150. In some examples, it is otherwise difficultfor a user to provide account information to the target device 150, suchas the target device 150 lacking a keyboard, touch screen, or othercomponents that receive arbitrary input. In some examples, the targetdevice 150 lacks a direct connection with the source device 110 overBLUETOOTH, WI-FI, or other electronic communication schemes.

The sound-sensing device 564 senses sounds proximate the target device150 (e.g., sounds within a vehicle in which the target device 150 islocated). In some embodiments, the sound-sensing device 564 comprisesone or more microphones. In some examples, the sound-sensing device 564includes multiple microphones in a sound-canceling arrangement tofacilitate operation in a noisy environment (e.g., configured for use ina vehicle). The sound-sensing device 564 is able to capture sounds fromproximate the target device 150 and create a representation thereof.These representations are analyzed by the target device 150 or themedia-delivery system 504.

In some examples, the representations are used to provide anutterance-based user interface. In such examples, speech recognitiontechnology is used to identify words spoken by the user. The words arerecognized as commands affect the behavior of the target device 150(e.g., affecting playback of media content by the target device 150).Natural language processing and/or intent-recognition technology areusable to determine appropriate actions to take based on the spokenwords.

Additionally or alternatively, the sound sensing device 564 determinesvarious sound properties about the sounds proximate the user such asvolume, dominant frequency or frequencies, among other properties. Thesesound properties are usable to make inferences about the environmentproximate to the target device 150, such as whether the sensed soundscorrespond to playback of a media content item. In some embodiments, thesound sensed by the sound-sensing device 564 are transmitted tomedia-delivery system 504 (or another external system) for analysis,such as using speech-recognition, intent-recognition, and mediaidentification technologies, among others.

Media-Delivery System

The media-delivery system 504 comprises one or more computing devicesand provides media content items to the source device 110 and, in someembodiments, other media-playback devices as well. The media-deliverysystem 504 includes a media content server 580, a media identificationserver 630, and an access management server 640. Although FIG. 5B showssingle instances of the servers 580, 630, 640, some embodiments includemultiple servers. In these embodiments, each of the multiple servers maybe identical or similar and may provide similar functionality (e.g., toprovide greater capacity and redundancy, or to provide services frommultiple geographic locations). Alternatively, in these embodiments,some of the multiple servers may perform specialized functions toprovide specialized services (e.g., services to enhance media contentplayback during travel or other activities, etc.). Various combinationsthereof are possible as well.

The media content server 580 transmits stream media to media-playbackdevices, such as the source device 110 or target device 150. In someembodiments, the media content server 580 includes a media serverapplication 584, a processing device 588, a memory device 590, and anetwork access device 592. The processing device 588, memory device 590,and network access device 592 may be similar to the one or moreprocessing devices 554, memory device 556, and network access device 562respectively, which have each been previously described.

In some embodiments, the media server application 584 streams music orother audio, video, or other forms of media content. The media serverapplication 584 includes a media stream service 594, a media data store596, and a media application interface 598. The media stream service 594operates to buffer media content such as media content items 606, 608,and 610 for streaming to one or more streams 600, 602, and 604.

The media application interface 598 can receive requests or othercommunication from media-playback devices or other systems, to retrievemedia content items from the media content server 580. For example, themedia application interface 598 receives a communication from themedia-playback engine 116.

In some embodiments, the media data store 596 stores media content items612, media content metadata 614, and playlists 616. The media data store596 may comprise one or more databases and file systems. As noted above,the media content items 612 may be audio, video, or any other type ofmedia content, which may be stored in any format for storing mediacontent.

The account data store 332 is used to identify users of a mediastreaming service provided by the media-delivery system 504. In someembodiments, an account allows a user to authenticate to themedia-delivery system 504 and enable the user to access resources (e.g.,media content items 612, playlists 616, etc.) provided by themedia-delivery system 504. In some embodiments, the user can usedifferent devices to log into the account and access data associatedwith the account in the media-delivery system 504. User authenticationinformation, such as a username, an email account information, apassword, and other credentials, can be used by the user to log into hisor her account. In some examples, the account data store 332 is storedin association with the accounts.

The media data store 596 includes user tastes data 620. The user tastesdata 620 includes but is not limited to user preferences regarding mediacontent items, such as media content items that the user likes/dislikes,media content item qualities that the user likes/dislikes, historicalinformation about the user's consumption of media content, libraries ofmedia content items, and playlists of media content items, among otheruser data.

The media content metadata 614 operates to provide various informationassociated with the media content items 612. In some embodiments, themedia content metadata 614 includes one or more of title, artist name,album name, length, genre, mood, era, acoustic fingerprints, and otherinformation. The playlists 616 operate to identify one or more of themedia content items 612. In some embodiments, the playlists 616 identifya group of the media content items 612 in a particular order. In otherembodiments, the playlists 616 merely identify a group of the mediacontent items 612 without specifying a particular order. Some, but notnecessarily all, of the media content items 612 included in a particularone of the playlists 616 are associated with a common characteristicsuch as a common genre, mood, or era. The playlists 616 may include usercreated playlists, which may be available to a particular user, a groupof users, or to the public.

The media identification server 630 is a server that provides mediaidentification services using a media identification engine 190. Inexamples, the media identification server 630 exposes applicationprogramming interface endpoints usable by calling devices or functionsto access media identification services provided by the mediaidentification server 630 using the media identification engine 190. Themedia identification server 630 can include a processing device 588, amemory device 590, and a network access device 592.

The access management server 640 is a server that provides accessmanagement services using the access management engine. In examples, theserver exposes application programming interface endpoints usable bycalling devices or functions to use access management services providedby the access management server 640 using the access management engine192. The access management server 640 can include a processing device588, a memory device 590, and a network access device 592.

Each of the source device 110 and the media-delivery system 504 caninclude additional physical computer or hardware resources. In at leastsome embodiments, the source device 110 communicates with themedia-delivery system 504 via the network 506.

Although in FIG. 5A only one source device 110, target device 150, andmedia-delivery system 504 are shown, in accordance with someembodiments, the media-delivery system 504 can support the simultaneoususe of devices, and the devices 110, 150 can simultaneously access mediacontent from multiple media-delivery systems 504. Additionally, althoughFIGS. 5A and 5B illustrate a streaming media-based system formedia-playback, other embodiments are possible as well. For example, insome embodiments, the source device 110 includes a media data store andthe source device 110 selects and plays back media content items withoutaccessing the media-delivery system 504. Further in some embodiments,the source device 110 operates to store previously streamed mediacontent items in a local media data store (e.g., in the media contentcache 572).

In at least some embodiments, the media-delivery system 504 can be usedto stream, progressively download, or otherwise communicate music, otheraudio, video, or other forms of media content items to the source device110 or target device 150 for playback. In accordance with an embodiment,the user interface 552 receives input from a user to, for example,select media content for playback during travel on the source device110.

Software embodiments of the examples presented herein may be provided asa computer program product, or software, that may include an article ofmanufacture on a machine-accessible or machine-readable medium havinginstructions. The instructions on the non-transitory machine-accessiblemachine-readable or computer-readable medium may be used to program acomputer system or other electronic device. The machine- orcomputer-readable medium may include, but is not limited to, magneticdisks, optical disks, magneto-optical disks, or other types ofmedia/machine-readable medium suitable for storing or transmittingelectronic instructions. The techniques described herein are not limitedto any particular software configuration. They may find applicability inany computing or processing environment. In some embodiments, there areone or more processors that operate as a particular program product orengine. In some embodiments, one or more processors are coupled to amemory storing instructions which when executed cause the one or moreprocessors to operate in a particular manner. In some embodiments, theone or more processors can include two or more sets of processorsoperating on different devices.

The terms “computer-readable”, “machine-accessible medium” or“machine-readable medium” used herein shall include any medium that iscapable of storing, encoding, or transmitting a sequence of instructionsfor execution by the machine and that causes the machine to perform anyone of the methods described herein. Further, it is common in the art tospeak of software, in one form or another (e.g., program, procedure,process, application, module, unit, logic, and so on), as taking anaction or causing a result. Such expressions are merely a shorthand wayof stating that the execution of the software by a processing systemcauses the processor to perform an action to produce a result.

Some embodiments include a computer program product. The computerprogram product may be a storage medium or media having instructionsstored thereon or therein which can be used to control, or cause, acomputer to perform any of the procedures of the example embodiments ofthe invention. The storage medium may, include without limitation, anoptical disc, a ROM, a RAM, an EPROM, an EEPROM, a DRAM, a VRAM, a flashmemory, a flash card, a magnetic card, an optical card, nanosystems, amolecular memory integrated circuit, a RAID, remote datastorage/archive/warehousing, and/or any other type of device suitablefor storing instructions and/or data.

Stored on any one of the computer-readable medium or media, someimplementations include software for controlling both the hardware ofthe system and for enabling the system or microprocessor to interactwith a human user or other mechanism utilizing the results of theexample embodiments of the invention. Such software may include withoutlimitation device drivers, operating systems, and user applications.Ultimately, such computer-readable media further include software forperforming example aspects of the invention, as described above.

Included in the programming and/or software of the system are softwaremodules for implementing the procedures described above.

Set of Data Structures

FIG. 6 illustrates an example set of data structures 700 storable in themedia data store 596. As illustrated, the set of data structures 700includes an account table 702, a media content item context datastructure 704, and a media content item data structure 706. For eachaccount record in the account table 702, the data structure 700 includesa device data table 710, a playback history table 712, a favorites table714, and a playback state data structure 716. It is noted that, whereuser data is used, it can be handled according to a defined user privacypolicy and can be used to the extent allowed by the user. Where the dataof other users is used, it can be handled in an anonymized matter so theuser does not learn of the details of other users generally orspecifically. In addition, the data contained in the set of datastructures 700 is stored according to a defined security policy and inaccordance with applicable regulations.

As illustrated, each account record in the account table 702 has arelationship with a device data table 710, a playback history table 712,and a favorites table 714. Each device record in the device data table710 has a relationship with a playback state data structure 716. Eachdevice record in a favorites table 714 has a relationship with a mediacontent item context data structure 704. Each context data structure hasa relationship with the media content item data structure 706.

The account table 702 stores one or more account records usable toidentify accounts of the media-delivery system 504. In some examples,some or all of the data from the account data store 332 of FIG. 3 isobtained from the set of data structures 700. For instance, the data inaccount data store 332 is obtained by querying the set of datastructures 700 for particular data. In an example, where a particularaccount is referred to in this disclosure (e.g., account 342), theaccount is associated with an entry stored in the data structure 700. Inan example, when the target device 150 accesses the media-deliverysystem 504 under the account 342, the media-delivery system 504 locatesan account record corresponding to the account 342 in the account table702. The media-delivery system 504 then uses the data associated withthe account record in the account table 702 to provide services. Forinstance, the media-delivery system 504 provides a media content itemdescribed in the favorites table 714 to the target device 150 andupdates the playback history table 712 accordingly.

The account table 702 references one or more other tables, and isreferenced by one or more other tables. In an example, each accountrecord of the account table 702 corresponds to an account. For instance,the first account 414 corresponds to a first account record in theaccount table 702, and the second account 424 corresponds to a secondaccount record in the account table 702, and the account 342 cancorrespond to a third account record in the account table 702. Eachaccount record of the account table 702 includes data associated withone or more fields of the account table 702, such as an account IDfield, a user ID field, a password field, and a type field. The accountID field stores an identifier of the account record, such as using anumber. The user ID field stores an identifier of a user, such as theuser's name. The password field stores data associated with a passwordof the user, such as a hashed and salted password. The type fieldidentifies subscription types associated with the account record.

Each account record identified in the account table 702 is associatedwith, and identifies, data for providing various services from themedia-delivery system 504. In some examples, the data includes thedevice data table 710, the playback history table 712, the favoritestable 714, and the playback state data structure 716, among others. Inthe illustrated example, the tables 710, 712, and 714 are primarilydescribed in association with a single record (e.g., the record havingthe Account ID: 71828). However, it is understood that, in otherembodiments, the tables 710, 712, and 714 can be structured to beassociated with a plurality of accounts

The device data table 710 identifies one or more devices associated witha particular account record of the account table 702. The device datatable 710 is referenced by the account table 702 or other tables. Thedevice data table 710 can reference one or more other tables.

In an example, each device record of the device data table 710 includesdata associated with a device. For instance, a first device record ofthe device data table 710 corresponds to the source device 110, and asecond device record of the device data table 710 corresponds to thetarget device 150 once both devices 110, 150 have been associated withthe same account. Each device record of the device data table 710includes data associated with one or more fields of the device datatable 710, such as a device ID field (e.g., storing device identifierdata, such as an alphanumeric identifier), a name field (e.g., forstoring a device name), a status field (e.g., for storing a status ofthe device, such as whether the device is currently active or inactive),and a location field (e.g., for storing a last known location of thedevice).

The playback history table 712 describes the media content items playedby the account by storing one or more playback records. The playbackhistory table 712 can reference and be referenced by one or more othertables. In an example, each playback record of the playback historytable 712 includes data associated with a media content item played by arespective account or device. Each playback record of the playbackhistory table 712 includes data associated with one or more fields ofthe playback history table 712, such as a device ID field (e.g., forstoring an identifier of the device that caused playback of the playbackrecord), a MCI (Media Content Item) ID field (e.g., for storing anidentifier of the media content item that was played back), a start timefield (e.g., for identifying the start time at which the media contentitem was played back), and a location field (e.g., for identifying thelocation of the device associated with the device ID when playback wasinitiated).

The favorites table 714 describes information about favorite mediacontent item contexts associated with the account by storing one or morefavorite records. The favorites table 714 includes information aboutfavorites associated with an account. The favorites table 714 canreference and be referenced by one or more other tables. In an example,each favorite record of the favorites table 714 includes data associatedwith a favorite media content item context (e.g., album or playlist).Each favorite record of the favorites table 714 includes data associatedwith one or more fields of the favorites table 714, such as an ID field(e.g., for identifying the favorite record) and a context field (e.g.,for identifying a media content item context associated with thefavorite record).

The context data structure 752 is a data structure (e.g., record of atable or other data structure) that contains data associated with amedia content item context (e.g., album or playlist). The context datastructure 752 can reference and be referenced by one or more tables orother data structures. The context data structure 752 stores dataregarding a particular media content item context in one or more fields,such as an ID field (e.g., for identifying the context data structure752), a title field (e.g., a string naming the context data structure752), a type field (e.g., for describing the type of the media contentitem context, such as a playlist, album, or television season), andmedia content item field (e.g., for identifying one or more mediacontent items of the context data structure 752).

The media content item data structure 706 is a data structure (e.g.,record of a table or other data structure) that contains data associatedwith a media content item. The media content item data structure 706 canreference and be referenced by one or more tables or other datastructures. The media content item data structure 706 stores dataregarding a particular media content item in one or more fields, such asan ID field (e.g., storing an identifier of the media content item datastructure 706), a title field (e.g., storing a title of the mediacontent item data structure 706, such as a song title), a content field(e.g., storing the content of the media content item or a link to thecontent of the media content item data structure 706, such as the audiocontent of a song), and an audio fingerprint field. In an example, theaudio fingerprint field stores an audio fingerprint of the content ofthe media content item data structure 706 that was generated using oneor more of the techniques described herein. In an example, where themedia identification engine 190 compares the audio fingerprint of theambient noise recording 154 to audio fingerprints of known media contentitems, each of the audio fingerprints of known media content items isstored in a respective media content item data structure 706.

The playback state data structure 716 is a data structure (e.g., arecord of a table or other data structure) that contains data associatedwith a state of a device (e.g., a state associated with a device recordof the device data table 710). The playback state data structure 716 canreference and be referenced by one or more tables or other datastructures. The playback state data structure 716 stores data regardinga particular playback state in one or more fields, such as a currentcontext field (e.g., describing a current context from which a device isplaying, such as by containing an identifier of the context), a currentMCI (Media Content Item) (e.g., describing a current media content itemthat is playing, such as by containing an identifier of the mediacontent item), a playback mode field (e.g., describing a playback modeof the device, such as shuffle or repeat), a playback speed field (e.g.,describing a current playback speed), and a next MCI field (e.g.,describing the next media content item to be played).

Various operations and processes described herein can be performed bythe cooperation of two or more devices, systems, processes, orcombinations thereof.

While various example embodiments of the present invention have beendescribed above, it should be understood that they have been presentedby way of example, and not limitation. It will be apparent to personsskilled in the relevant art(s) that various changes in form and detailcan be made therein. Thus, the present invention should not be limitedby any of the above described example embodiments, but should be definedonly in accordance with the following claims and their equivalents.Further, the Abstract is not intended to be limiting as to the scope ofthe example embodiments presented herein in any way. It is also to beunderstood that the procedures recited in the claims need not beperformed in the order presented.

1. A method comprising: operating a media playback appliance in aprimary mode associated with a first account; responsive to receiving aguest mode signal, creating an audio recording using a sound sensingdevice of the media playback appliance, wherein the audio recordingcontains audio associated with a media content item played by a deviceassociated with a second account; providing the audio recording from themedia playback appliance to a remote server for identification of themedia content item; and operating the media playback appliance in aguest mode associated with the second account based on theidentification of the media content item.
 2. The method of claim 1,further comprising: receiving the guest mode signal over a voice-baseduser interface of the media playback appliance.
 3. The method of claim1, wherein operating the media playback appliance in the guest modeincludes: operating with a limited set of permissions compared to theprimary mode.
 4. The method of claim 1, wherein operating the mediaplayback appliance in the guest mode includes: operating in the guestmode until a certain number of media content items are played.
 5. Themethod of claim 1, wherein operating the media playback appliance in theguest mode includes: storing credentials of the first account inassociation with the primary mode.
 6. The method of claim 1, furthercomprising: responsive to the media playback appliance receiving areversion signal while operating in the guest mode associated with thesecond account, operating the media playback appliance in the primarymode associated with the first account.
 7. The method of claim 6,further comprising obtaining credentials associated with the firstaccount from the remote server.
 8. The method of claim 1, furthercomprising: after beginning to operate in the guest mode, receiving froma media server application at least a portion of the media content item;and playing the media content item using the media playback appliance.9. The method of claim 8, wherein playing the media content itemincludes starting playback of the media content item at a location otherthan a beginning of the media content item.
 10. The method of claim 8,wherein playing the media content item includes fading in playbackresponsive to receiving a fade-in message.
 11. The method of claim 1,further comprising: receiving credentials associated with the secondaccount at the media playback appliance, wherein operating in the guestmode associated with the second account based on the identification ofthe media content item, includes operating in the guest mode using thecredentials.
 12. The method of claim 1, wherein providing the audiorecording includes performing an application programming interface callwith the recording and a location of the media playback appliance asparameters of the application programming interface call.
 13. The methodof claim 1, wherein the media playback appliance automatically revertsto the primary mode associated with the first account after an eventoccurs.
 14. The method of claim 13, wherein the media playback applianceautomatically reverts to the primary mode associated with the firstaccount after a device power event occurs.
 15. A system comprising: oneor more processing devices; and a computer-readable memory devicecoupled to the one or more processing devices and comprisinginstructions thereon that, when executed by the one or more processingdevices, cause the one or more processing devices to perform the methodof claim 1.